import axios from 'axios'

export const baseURL = 'http://8.130.87.241:8188/api'

const request = axios.create({
  baseURL: baseURL,
  timeout: 8000,
});

const server = axios.create();

export const uploadFileRequest = (url, formData, headers) => {
  return server({
    url,
    method: "post",
    data: formData,
    headers: { ...headers, "Content-Type": "multipart/form-data" }, // 文件上传需指定该Content-Type
  });
};
//拦截器
// 添加请求拦截器 ---接口发送给后端的一瞬间的处理
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么  --加token 
  // 每次请求接口 都会先加上token 到 请求头中 再进行发送请求

  if(localStorage.getItem('token')){
    let user = localStorage.getItem('token');
    config.headers.token = user;
  }
 
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器-拿到后端的返回数据-可以将数据处理后再返回页面
request.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  if(response.data.code != 200) {
    // 判断是不是token到期
    if(response.data.code === 403) {
      localStorage.removeItem('token');
      window.location.href = '/'
    }
  }
  return response;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  return Promise.reject(error);
});

server.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  if(response.data.code != 200) {
    // 判断是不是token到期
    if(response.data.code === 403) {
      // localStorage.removeItem('token');
      // window.location.href = '/'
    }
  }
  return response.data;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  return Promise.reject(error);
});

export default request;